perm filename PTY.JMG[UP,DOC]3 blob
sn#105891 filedate 1974-06-09 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00008 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 HOW TO FEED AND CARE FOR PTY
C00005 00003 THE FIRST LINE OF THE FILE MUST BE A LOGIN
C00008 00004 HERE ARE SOME EXAMPLES OF (SYNONYMOUS) SEQUENCE-LISTS
C00009 00005 PTY WILL RECOGNIZE THESE SPECIAL CHARACTERS
C00012 00006 MORE SPECIAL CHARACTERS WHICH PTY WILL (HOPEFULLY) RECOGNIZE
C00015 00007 WHEN YOU R PTY IT WANTS TO KNOW A FEW THINGS
C00017 00008 HERE IS A SIMPLE EXAMPLE:
C00018 ENDMK
C⊗;
HOW TO FEED AND CARE FOR PTY
PTY IS A GENERAL PURPOSE PSEUDO-TTY COMMAND
PROCESSOR. THE USER CREATES A FILE WHICH LISTS THE
SET OF COMMANDS THAT HE WOULD LIKE TO TYPE ON A TTY.
PTY SENDS THESE COMMANDS TO A PSEUDO-TTY. THE USER
CAN SEE THE TYPEOUT ON HIS TTY AND/OR HAVE IT STORED
IN AN OUTPUT FILE FROM PTY.
PTY IS MOST USEFUL TO SETUP A PRODUCTION RUN
WHICH LOOPS THROUGH A SET OF COMMANDS SEVERAL TIMES,
CHANGING A FEW PARAMETERS FOR EACH PASS. THE USER CAN
SPECIFY SUCH A LOOP IN THE FILE HE GIVES TO PTY.
ALL LINES OF THE INPUT FILE MUST BEGIN WITH
ONE OF THE FOLLOWING "LINE-CHARACTERS":
"." IF THE LINE IS A MONITOR COMMAND, AND PTY SHOULD WAIT
FOR MONITOR LEVEL (ACTIVELY CHECKING BITS AND CHARACTERS).
"*" IF THE LINE IS A PROGRAM COMMAND, AND PTY SHOULD WAIT
FOR COMMAND LEVEL (ACTIVELY CHECKING BITS AND CHARACTERS).
"{"<STRING>"}" IF <STRING> IS EXPECTED TO PRECEDE THIS LINE OF
INPUT (PTY WAITS FOR CHARACTERS AND CHECKS FOR <STRING>;
THIS IS MORE EFFICIENT THAN ABOVE TWO CHECKS, WHICH
USE MORE COMPUTER TIME FOR CONTINUAL CHECKING).
<TAB> or <SPACE> IF THIS IS A CONTINUATION OF THE PREVIOUS LINE.
"LOOP" IF THIS IS AN INNER LOOP SPECIFICATION.
"∞" IF USER WANTS INTERACTIVE TTY LINE-MODE (UNTIL HE TYPES
A LINE CONSISTING ENTIRELY OF "∞", WHICH RETURNS TO
THE PTY SEQUENCE OF LINES).
THE FIRST LINE OF THE FILE MUST BE A LOGIN
(MONITOR-LEVEL) COMMAND WITH THE USER'S PPN:
.L 1/PPN
LOOPING THROUGH THE COMMAND FILE
THERE ARE MANY WAYS TO INITIATE LOOPING THROUGH THE
COMMAND FILE. ONE CAN SET THE VARIABLE "LOOPS" WHEN RUNNING
PTY (SEE BELOW); ONE CAN SPECIFY A LIST OF ITEMS TO BE FOUND
IN SOME OTHER FILE, SETTING THE VARIABLE "FILE" WHEN RUNNING
PTY (SEE BELOW); OR, FINALLY, ONE CAN EMBED A SEQUENCE-LIST IN
ANY LINE OF THE COMMAND FILE. THIS SEQUENCE-
LIST IS A SET OF SUB-STRINGS SUCH THAT THE NTH SUB-STRING WILL
BE CHOSEN IN THE NTH LOOP THROUGH THE FILE. THIS SUB-STRING
WILL BE DIRECTLY EMBEDDED IN THE CONTEXT THAT THE SEQUENCE-LIST
WAS PLACED. THE TOTAL NUMBER OF LOOPS THROUGH THE FILE CAN THUS
BE DETERMINED BY THE LONGEST SEQUENCE-LIST, AND ALL SHORTER
SEQUENCE-LISTS WILL WRAP AROUND RESPECTIVELY.
THE FORMAT FOR A SEQUENCE-LIST FOLLOWS (NOTE THAT A SPECIAL
CHARACTER APPEARS IN QUOTES FOR THE PURPOSE OF STATING THE FORMAT ONLY.
THE QUOTES SHOULD NOT APPEAR IN THE ACTUAL FILE.
"⊂"<STR1>"|"<STR2>"|"< ... >"|"<STR_N>"⊃"
NOTE THAT THE LIST IS BOUNDED BY "⊂" AND "⊃", AND THE SUB-
STRINGS ARE SEPARATED BY THE DELIMETER "|". IT IS PERMISSIBLE
TO SPECIFY THE CONSEQUETIVE REPETITION OF ANY STRING IN THE LIST
BY FOLLOWING THAT STRING WITH: "@"_NUM , WHERE NUM IS THE NUMBER
OF REPETITIONS DESIRED.
HERE ARE SOME EXAMPLES OF (SYNONYMOUS) SEQUENCE-LISTS
*⊂FOO.1|FOO.2|FOO.3|FOO.3|FOO.3⊃
*⊂FOO.1|FOO.2|FOO.3@3⊃
*FOO.⊂1|2|3|3|3⊃
*FOO.⊂1|2|3@3⊃
THE ABOVE COMMANDS WOULD SET PTY TO LOOP THROUGH THE WHOLE
FILE AT LEAST 5 TIMES. THE NTH SUCCESSIVE LOOP WOULD EMPLOY THE NTH
STRINGS IN THE ABOVE LINES. AN EXAMPLE OF TWO SEQUENCE-LISTS OF
UNEQUAL LENGTHS, AND A SYNONYMOUS LINEAR LIST FOLLOWS:
*⊂FOO@3|BAZ@3⊃.⊂1|2⊃
*⊂FOO.1|FOO.2|FOO.1|BAZ.2|BAZ.1|BAZ.2⊃
PTY WILL RECOGNIZE THESE SPECIAL CHARACTERS
"↑"<CHR> CONTROL KEY, TO MONITOR (CHR←CHR-'100).
("↑C" IS CALL).
"α"<CHR> CONTROL KEY AT USER LEVEL (CHR←CHR+'200).
"β"<CHR> META KEY AT USER LEVEL (CHR←CHR+'400).
"$" ALTMODE.
"¬" BACKSPACE.
"_" LINE FEED.
"""<STR>""" STR IS USED AS LITERAL, EXCEPTING "⊂|⊃", THE
SPECIAL CHARACTERS ARE NOT INTERPRETED.
"⊗" IF THIS CHARACTER IS PLACED IN FRONT OF A COMMAND
THEN IT WILL ONLY BE FUNCTIONAL IN THE FIRST LOOP.
"\" SUPPRESS THE <CR> AT THE END OF THE COMMAND.
"#" SUBSTITUTE THE "LOOP NUMBER" FOR THIS CHR.
"∪" INTERACTIVE PAUSE
(IS A COMPLETE COMMAND, FOLLOWING "LINE-CHAR"):
THE MESSAGE "TYPE <CR> TO CONTINUE" WILL
APPEAR ON TTY AND PTY WAITS FOR <CR>.
"∩" INTERACTIVE TTY CHARACTER-MODE
(IS A COMPLETE COMMAND, FOLLOWING "LINE-CHAR"):
THE MESSAGE "TTY INPUT MODE. TO EXIT TYPE "∩" "
WILL APPEAR ON TTY AND PYT WILL ACCEPT INPUT
FROM TTY UNTIL IT SEES "∩" CHARACTER.
THIS LOSES OCCASIONALLY, BETTER TO USE THE "∞"
INTERACTIVE TTY LINE-MODE (SEE BELOW).
"∞" INTERACTIVE TTY LINE-MODE
(IS A COMPLETE COMMAND, NO "LINE-CHAR"):
THE MESSAGE "TTY INPUT MODE. TO EXIT TYPE "∩" "
WILL APPEAR ON TTY AND PYT WILL ACCEPT INPUT
FROM TTY UNTIL IT SEES "∩" CHARACTER.
THIS LOSES OCCASIONALLY, BETTER TO USE THE "∞"
INTERACTIVE TTY LINE-MODE (SEE BELOW).
MORE SPECIAL CHARACTERS WHICH PTY WILL (HOPEFULLY) RECOGNIZE
<COMMAND-LINE>"↓"<NUM>"↓"
SKIP NUM-1 LINES FOR NEXT INSTRUCTION
<COMMAND-LINE>"∧"<NUM>
LOCAL SLEEP SWITCH IS SET TO NUM SECONDS. THIS MUST
APPEAR AT VERY END OF A LINE AND SETS THE LAG UNTIL
THE NEXT LINE IS PROCESSED. PERTAINS ONLY TO THE
ACTIVE-TYPE PTY "LINE-CHAR" FOR THE NEXT LINE,
RE HOW LONG BETWEEN BIT-CHECKS (SEE FIRST PAGE).
<COMMAND-LINE>"{"<STR1>"}"<STR2>"↓"<NUM>"↓"
EVALUATE THE INCOMING STRINGS AFTER THE COMMAND IS SENT
OUT AND TEST FOR THE (SUB)STRING STR1. IF IT OCCURS:
1. SEND OUT THE STRING STR2.
2. SKIP NUM-1 LINES IN THE COMMAND FILE (OPTIONAL).
"LOOP"<NUM1>"FOR"<NUM2> INNER LOOP
(IS A COMPLETE LINE, WITH NO "LINE-CHAR").
THE NEXT NUM1 LINES IS TREATED AS AN INNER LOOP TO THE MAIN
LOOP (THROUGH THE ENTIRE FILE). IT WILL BE READ THROUGH
NUM2 TIMES BEFORE CONTINUING IN THE MAIN BODY. NOTE THAT
NUM1 OR NUM2 (THE LATTER MAY BE USEFUL) CAN BE SET UP
AS A SEQUENCE-LIST AS WELL AS A CONSTANT. AS USUAL, THE
SEQUENCE-LIST IS INDEXED WITH RESPECT TO THE MAIN LOOP.
THE SPECIAL CHARACTERS "∀" AND "∃" MAY BE USED AS COUNTERS
IN THE INNER LOOP, AS "#" IS USED IN THE MAIN LOOP. THEY
WILL RESET TO 1 AT THE INITIALIZATION OF EACH INNER LOOP.
"↔" PTY WILL ASK FOR A STRING (OR GET ONE FROM A SECOND FILE, IF THE
VARIABLE "FILE" IS SET-SEE BELOW), WHICH WILL BE SUBSTITUTED
FOR THE ARROW IN THE COMMAND FILE, EACH LOOP THROUGH.
"→" PTY WILL SUBSTITUTE THE ABOVE STRING FOR THE REST OF THIS
PARTICULAR LOOP, FOR THIS ARROW.
"SEND"<SPACE><PPN><SPACE><STRING> MESSAGE STRING UPON EXIT.
(IS A COMPLETE LINE, NO "LINE-CHAR").
PTY WILL SEND <STRING> TO <PPN> UPON EXITING.
THIS SHOULD BE THE LAST LINE IN A COMMAND FILE.
WHEN YOU R PTY IT WANTS TO KNOW A FEW THINGS
"INPUT : " - (COMMAND "FILE.EXT") (OR SEE BELOW)
(EXT="PTY" IS DEFAULT AND NEED NOT BE STATED)
"OUTPUT : " - ("TTY:" AND/OR OUTPUT "FILE.EXT", E.G.:
1. "TTY:"
2. "OUTPUT.LST"
3. "TTY:OUTPUT.LST"
4. NULL (=NO RECORD AT ALL)
YOU MAY SET ANY OF THE FOLLOWING VARIABLES:
"OFFSET" - THE OFFSET OF THE NUMBER WHICH "#" WILL CAUSE
TO BE PRINTED VS. THE REAL LOOP NUMBER (DEFAULT=0).
"START" - THE FIRST ACTUAL LOOP TO BE PROCESSED (DEFAULT=1).
"INPUT" - INPUT SETUP PARAMETERS FROM TTY.
"FILE" - ANOTHER FILE, WHICH HAS A LIST OF STRINGS FOR "↔"
TYPE OF INPUT. PARSE THESE ITEMS BY "," OR " ".
"LOOPS" - THE NUMBER OF LOOPS THRU THE COMMAND FILE, IF
NOT OTHERWISE SPECIFIED.
"SLEEP" - THE NUMBER OF SECONDS THE PTY WILL WAIT BEFORE PROCESSING
THE NEXT COMMAND. (NOTE THAT PTY CAN TAKE AS MUCH
COMPUTER TIME AS THE JOBS IT RUNS IF SLEEP=0)
"DEBUG" - TYPE OUT THE MAGIC BITS (INTERESTED????).
TYPE <CR> TO "INPUT : " AND "*" WILL BE PRINTED.
THEN SET VARIABLE "VAR" TO SOME VALUE AS FOLLOWS:
*VAR←VALUE;
*<CR> WILL RETURN YOU TO "INPUT : "
HERE IS A SIMPLE EXAMPLE:
.L 1/PPN
.⊗A DTA1:
.ED BAZ.SAI
{*}S#$⊂2|3|4⊃$100
{*}D200:*
{*}I200
{*}COMMENT THIS IS VERSION NUMBER # OF BAZ.SAI
AND THIS IS A COMMENT ON LINE 200;
{*}$\
{*}E
.TYPE BAZ
.∪
.R SAIL
*BAZ#.REL←BAZ.SAI∧10
*↑C
.R LOADER
*BAZ#$∧10
.SAV BAZ⊂1|2|3⊃
.COP DTA1:←BAZ#.DMP